package leilao.model;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

/**
 * Classe que representa um Produto Carro do Leilão
 * @author Leonardo Rocha Dias
 * @version 9.11-28
 * @since 2009
 */
public class Carro implements Produto {

    // <editor-fold defaultstate="collapsed" desc=" Atributos ">
    private String descricao;
    private List<Lance> lances;
    // </editor-fold>

    // <editor-fold defaultstate="collapsed" desc=" Construtor ">
    public Carro(String descricao) {
        this.descricao = descricao;
        this.lances = new ArrayList<Lance>();
    }
    // </editor-fold>

    // <editor-fold defaultstate="collapsed" desc=" Propriedades ">
    /**
     * Get the value of descricao
     *
     * @return the value of descricao
     */
    public String getDescricao() {
        return descricao;
    }

    /**
     * Set the value of descricao
     *
     * @param descricao new value of descricao
     */
    public void setDescricao(String descricao) {
        this.descricao = descricao;
    }
    // </editor-fold>

    // <editor-fold defaultstate="collapsed" desc=" Métodos da Interface ">
    public boolean ofertar(Lance lance) {
        boolean resultado = false;

        if (lance != null) {
            if (lance.getValor() > 0.0) {
                lances.add(lance);
                resultado = true;
            }
        }

        return resultado;
    }

    public boolean lanceJaFeito(Lance lance) {
        boolean resultado = false;

        for (Lance lanceEfetuado : lances) {
            if (lance.equals(lanceEfetuado)) {
                resultado = true;
                break;
            }
        }

        return resultado;
    }

    public Lance finalizar() {
        Lance lance = null;
        Lance lanceMinimo = null;
        
        boolean[] duplicados = new boolean[this.lances.size()];

        for (int i = 0; i < lances.size(); i++) {

            for (int j = 1; j < lances.size(); j++) {
                
                if (lances.get(i).getValor() == lances.get(j).getValor()) {
                    duplicados[i] = true;
                }
                
            }

        }

        for (int i = 0; i < lances.size(); i++) {
            if (duplicados[i] != true) {
                if (lance != null) {
                    if (lanceMinimo.getValor() > lance.getValor()) {
                        lance = lances.get(i);
                        lanceMinimo = lance;
                    }
                } else {
                    lance = lances.get(i);
                    lanceMinimo = lance;
                }
            }
        }
        
        return lanceMinimo;
    }
    // </editor-fold>

}
